A virtual machine (VM) is a software abstraction, or “virtualization,” of an actual physical computer system. Each VM typically mimics the general structure of a physical computer and as such will usually have both virtual system hardware and guest system software. The virtual system hardware typically includes at least one virtual CPU, virtual memory, at least one storage device such as a virtual disk, and one or more virtual devices. All of the virtual hardware components of the VM can be implemented in software to emulate corresponding physical components. The guest system software typically includes a guest operating system and drivers as needed.
An advantage of virtual machine technology is an ability to run multiple virtual machines on a single host platform. Frequently, rather than starting up a new virtual machine from scratch by allocating resources for it, loading and booting an operating system, and then loading and starting specific applications, system operators find it useful to create new working virtual machines that are copies of running machines (either physical or virtual). To start up a virtual machine in this way, a typical process starts with the creation of a new virtual machine on a suitable host. Thereafter, the process is different from conventional machine startup. To clone the contents of a live physical source machine, a “snapshot” of the source machine file system is taken, typically with the aid of software residing on the source machine. The snapshot provides an image of the complete state of the source machine file system at a moment in time. Typically, it does not involve physically copying all of the memory to new locations. Instead, after the time of the snapshot, all file changes are made to new copies of the changed files, and the pre-snapshot versions of all files, including subsequently deleted files, are preserved. In normal operation, the source machine operating system and application software see only the new version of the file system. Access to the snapshot version is typically made available only by rebooting the machine in a special roll-back or recovery mode. File-system snapshot capabilities have been built into versions of the MICROSOFT® WINDOWS® operating system since about 2003. Third-party snapshot software is also available from, for example, ACRONIS® Inc. and STORAGECRAFT™ Technology Corporation. Snapshot techniques are also useful to allow the copying of a source machine to a new virtual machine.
Snapshot techniques were originally developed to support various backup, roll-back, and recovery functions, but they can also be used for “sandbox” functions. Sandbox functionality allows testing of new ideas, patches and the like while preserving the option of restoring a previous known machine configuration. In a sandbox application, a user may want to test some software changes before committing to them or run an application without leaving a trace of his/her activities. By running a VM using the snapshot version of the file system, s/he can ensure that changes are functioning properly while retaining the option to go back to a known working configuration. S/he can also run an application such as a web browser that normally leaves records of activity, and then restore the system to a state as if s/he had never run the application. In these applications, the machine must be rebooted to run on either the snapshot version of the file system or the regular version. Such uses of snapshot techniques are not widely practiced, but at least one product exists to support them: SHADOWSURFER™ from STORAGECRAFT™ Technology Corporation.
In order for a new VM to make use of the snapshot image of the source machine, it is cloned to storage associated with new virtual machine. There are many ways of performing this cloning operation. In a typical computing environment, the new VM is connected to the source machine over a network, and the data are transferred over that network. The VM memory can be local (such as all or a portion of a disk drive attached directly to the physical machine which hosts the VM), or it can be located remotely, for example, in a Storage Area Network (SAN) accessible from the VM. Regardless of the specific hardware and software details, the cloning operation can take a considerable amount of time. The amount of time will vary according to the implementation details, the resulting average data transfer rates, and the size of the source machine file system that must be transferred. For typical machines and networks in common use in 2008, the size of the source file system can be 50 GB or more, and typical average data transfer rates can be about 20 MB/s. Thus, a complete cloning operation can take at least 2500 seconds or about 40 minutes. Significantly longer times are not uncommon, especially for servers running data-intensive applications that can have much larger file systems.
After data transfer is completed, the data may need to be adapted to function in a virtual environment. These changes are typically related to operating system files, especially device drivers and the like, which need to be modified to connect to specific hardware or memory locations in the new VM.
Once the source file system image has been cloned to the new VM storage, the new VM has all the information it needs to pick up where the source machine left off at the time of the file system snapshot. This complete process is well-known and is commonly referred to as “P2V Conversion” (“physical-to-virtual” conversion), although the source machine need not necessarily be a physical machine. Software to support bringing up new VMs that are cloned from source machines as described above is available from various vendors. Examples include VMWARE CONVERTER™ and P2VASSISTANT™ (now discontinued) from VMWARE®, Inc. and POWERCONVERT™ from PLATESPIN™ Ltd. Similar functionality is also described in U.S. patent applications by Armington (application Ser. No. 10/869,730) and by Kerr et al. (application Ser. No. 11/257,009).
A problem that can arise for certain applications of computing machine migration is that the long time required to complete the migration can result in significant downtime for critical computing services. One example arises for servers that process customer transactions or other user business which cannot tolerate downtime, and where server data are continually changing. In order to switch operations from an original source machine to a new VM, it is typically necessary to disable user interaction from the time that a snapshot of the source file system is taken until the new VM can take over, a period that can easily extend to several hours depending on the amount of data that must be copied and the available data transmission rate. While it is generally possible to leave the source machine running after the snapshot and during the copying operation (“live” computing machine migration), such a process may be acceptable only for servers providing static data.
The conversion process or data copying may also fail (for example, due to a networking problem), or the new target VM may not boot because of an incompatibility with the virtual environment. In such a case, the user would not know whether the conversion has succeeded until the end of the process, possibly several hours later.
In other applications, the new VM is used only for testing purposes such as “sandbox” testing of new ideas (e.g., software patches and service packs) or system administrator diagnosis of a reported problem. In these cases, it is advantageous to use a VM clone of a physical machine as a “safe” copy. In these applications as well, it is frequently undesirable to wait for the file system copying operation to be completed. Critical time may be lost and system administrator productivity may be impaired.
When VM technology in general and computing machine migration in particular are being demonstrated for new customers, it is better to use a customer machine as the source to provide a workload that the potential customer already understands. However, for large source systems, the time required to copy the source system files can be prohibitive and such demonstrations would not be practical without instant migration technology.